Take grabs into account.
authorAnders Carlsson <andersca@imendio.com>
Thu, 13 Apr 2006 08:51:33 +0000 (08:51 +0000)
committerAnders Carlsson <andersca@src.gnome.org>
Thu, 13 Apr 2006 08:51:33 +0000 (08:51 +0000)
2006-04-13  Anders Carlsson  <andersca@imendio.com>

        * gdk/quartz/gdkevents-quartz.c:
        (synthesize_enter_event):
        (synthesize_leave_event):
        (synthesize_crossing_events):
        Take grabs into account.

        (find_window_for_event):
        Only return grabbed window when owner_events is FALSE.

ChangeLog
ChangeLog.pre-2-10
gdk/quartz/gdkevents-quartz.c

index 20eeb8559d0faa3722f799d24f97492355a450aa..96873c21736c9cd0c4c68457d849b1f415050257 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-04-13  Anders Carlsson  <andersca@imendio.com>
+
+        * gdk/quartz/gdkevents-quartz.c:
+        (synthesize_enter_event):
+        (synthesize_leave_event):
+        (synthesize_crossing_events):
+        Take grabs into account.
+
+        (find_window_for_event):
+        Only return grabbed window when owner_events is FALSE.
+
 2006-04-13  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_header_focus): Reorganize slightly
index 20eeb8559d0faa3722f799d24f97492355a450aa..96873c21736c9cd0c4c68457d849b1f415050257 100644 (file)
@@ -1,3 +1,14 @@
+2006-04-13  Anders Carlsson  <andersca@imendio.com>
+
+        * gdk/quartz/gdkevents-quartz.c:
+        (synthesize_enter_event):
+        (synthesize_leave_event):
+        (synthesize_crossing_events):
+        Take grabs into account.
+
+        (find_window_for_event):
+        Only return grabbed window when owner_events is FALSE.
+
 2006-04-13  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_header_focus): Reorganize slightly
index 97c62f2993a132088dd2acc14b2d99d141703996..3f6c94a3d465d07d454578faf7407b94f145635b 100644 (file)
@@ -798,6 +798,11 @@ synthesize_enter_event (GdkWindow      *window,
 {
   GdkEvent *event;
 
+  if (_gdk_quartz_pointer_grab_window != NULL && 
+      !pointer_grab_owner_events && 
+      !(pointer_grab_event_mask & GDK_ENTER_NOTIFY_MASK))
+    return;
+
   if (!(GDK_WINDOW_OBJECT (window)->event_mask & GDK_ENTER_NOTIFY_MASK))
     return;
 
@@ -829,6 +834,11 @@ synthesize_leave_event (GdkWindow      *window,
 {
   GdkEvent *event;
 
+  if (_gdk_quartz_pointer_grab_window != NULL && 
+      !pointer_grab_owner_events && 
+      !(pointer_grab_event_mask & GDK_LEAVE_NOTIFY_MASK))
+    return;
+
   if (!(GDK_WINDOW_OBJECT (window)->event_mask & GDK_LEAVE_NOTIFY_MASK))
     return;
 
@@ -926,7 +936,7 @@ synthesize_crossing_events (GdkWindow      *window,
       /* Dunno where we are coming from */
       synthesize_enter_event (window, nsevent, mode, GDK_NOTIFY_UNKNOWN);
     }
-
+  
   _gdk_quartz_update_mouse_window (window);
 }
 
@@ -1060,9 +1070,9 @@ find_window_for_event (NSEvent *nsevent, gint *x, gint *y)
        GdkEventMask event_mask;
        GdkWindow *real_window;
 
-       if (_gdk_quartz_pointer_grab_window)
+       if (_gdk_quartz_pointer_grab_window && !pointer_grab_owner_events)
          {
-           if (pointer_grab_event_mask & get_event_mask_from_ns_event (nsevent)) 
+           if (pointer_grab_event_mask & get_event_mask_from_ns_event (nsevent))
              {
                int tempx, tempy;
                GdkWindowObject *w = GDK_WINDOW_OBJECT (_gdk_quartz_pointer_grab_window);